#ifndef DBEXPORTWIDGET_H
#define DBEXPORTWIDGET_H

#include <QWidget>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlDatabase>
#include "BtWidget_global.h"
#include <QDebug>

class BTWIDGET_EXPORT dbExportWidget : public QWidget
{
    Q_OBJECT
public:
    explicit dbExportWidget(QWidget *parent = nullptr);

    /*------------------- 数据库相关设置 -----------------*/
    void setDbInfo(const QString &dbFileName, const QString &dbCommName);
    void setDbQueryInfo(const QString &dbTableName,     /* "tableName" */
                        const QString &dbColumnsSql,    /* "id,name,index" */
                        const QString &dbWhereSql,      /* "where id>10" */
                        const QString &dbOrderSql);     /* "id asc" */
    //设置数据库文件名称
    void setDbFileName(const QString& dbFileName);
    //设置数据库连接连接名称
    QString dbCommName() const;
    void setDbCommName(const QString& dbCommName);
    //设置表名称
    void setDbTableName(const QString &dbTableName);
    //设置查询列名称
    void setDbColumnsSql(const QString &dbColumnsSql);
    //设置排序条件
    void setDbOrderSql(const QString &dbOrderSql);
    //设置查询条件
    void setDbWhereSql(const QString &dbWhereSql);
    //设置统计表行数的字段**
//    void setDbCountName(const QString &dbCountName);

    /*----------- 设置导出文件的相关内容 -----------------*/
    // 设置导出Excel的文件名称
    void setExcelFileName(const QString fileName);

    // 设置导出Excel的行高
    void setExcelRowHeigth(const int height);
    // 设置导出Excel的表头高度
    void setExcelHeaderHeight(const int height);

    // 设置导出Excel每一列的名称
    void setExcelColumNameList(const QList<QString> &ColumnNamesList);
    // 设置每一列的宽度
    void setExcelColumnWidthList(const QList<int> &ColumnWidthList);

    // 导出
    int exportToExcel();
    int exportToExcel(const QString fileName);

signals:

public slots:


private:
    //需要设置的变量
    QString m_dbFileName;
    QString m_dbCommName;   //设置数据库连接名称
    QString m_dbTableName;  //数据库表名称
    QString m_dbColumnsSql; //查询列名称
    QString m_dbOrderSql;   //排序条件
    QString m_dbWhereSql;   //查询条件
    QString m_dbCountName;  //设置统计表行数的字段

    // Excel相关内容
    QString m_ExcelFileName;
    int m_ExcelHeaderHeight;
    int m_ExcelRowHeight;

    QList<QString> m_ColumnNamesList;   //列名称集合,需要结合“查询列名称”进行设置
    QList<int> m_ColumnWidthList;       //列宽度集合

    QString m_sqlString;    //查询字符串
    QString m_sqlTemp;

    QSqlDatabase m_Database;
//    QSqlQueryModel *m_pSqlModel;

private:

};

#endif // DBEXPORTWIDGET_H
